package org.example.di.pro2_autowired_annotation;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.stereotype.Service;

import javax.annotation.Resource;
import javax.inject.Inject;
import javax.inject.Named;

@Service   //业务层的托管
public class OrderBizImpl implements OrderBiz{
    //方案一
    //业务层依赖于DAO层
    @Autowired      //按照类型注入，只要OrderDao的实现类有一个，就可以注入
    @Qualifier("orderOceanDao")   //有两个实现类，就需要指定一个实现类的名称
    private  OrderDao orderDao;   //接口类型的属性，注入的是实现类的对象，只能有一个实现类，多了会报错


    //方案二
//    @Resource(name="orderOceanDao")     //等同于@Autowired+@Qualifier("orderOceanDao")
//    private OrderDao orderDao;

    //方案三
//    @Resource  //等同于@Autowired  多个实现类会报错
//    //@Qualifier("orderOceanDao")
//    private OrderDao orderDao;

    //方案四
//    @Inject
//    //@Qualifier("orderOceanDao") 或者
//    @Named("orderOceanDao")
//    private OrderDao orderDao;



    @Override
    public void makeOrder() {
        if(orderDao!=null){
            orderDao.addOrder();
        }

    }
}
